<?php

namespace Addons\Blog;

use Common\Controller\Addon;

/**
 * Class BlogAddon
 * @package Addons\Blog
 */
class BlogAddon extends Addon
{
    protected $admin_menu = array(
        array(
            'title' => '博客管理',
            'name' => '',
            'type' => 2,
            'module' => 'Admin',
            'remark' => '博客插件菜单',
            'icon' => 'fa fa-desktop',
            '_child' => array(
                array(
                    'title' => '发表文章',
                    'name' => 'Blog/Manage/add',
                    'type' => 2,
                    'module' => 'Admin',
                    'remark' => '博客插件菜单',
                    'icon' => 'fa ',
                    'function'=>'addon_url',
                ),
                array(
                    'title' => '文章管理',
                    'name' => 'Blog/Manage/post_list',
                    'type' => 2,
                    'module' => 'Admin',
                    'remark' => '博客插件菜单',
                    'icon' => 'fa ',
                    'function'=>'addon_url',
                )
            ),
        ),
    );

    /**
     * 注册钩子
     * 初步设想：
     * 返回钩子数组 用于告诉系统这个插件想要完成什么功能 要对哪些钩子进行实现
     * 数组结构：
     * ['系统钩子'=>'钩子的别名方法']
     * 或 ['系统钩子'=>['一些列的功能队列','一些列的功能队列','一些列的功能队列']] 这种写法多用于队列类型的功能
     * 或['系统钩子1','系统钩子2','系统钩子3',] 这种写法是最简便的，但执行的方法就只能是和系统钩子名称相同的本类的方法名了
     * 当然一个插件中允许你使用任意的钩子注册规则进行混合使用
     * @return array|void 必须返回
     */
    public function register_hook()
    {
        return [
            'web_index_page' => 'home',
        ];
    }

    public function home(&$param)
    {
        redirect(addon_url('Blog/Index/index'));
    }

    public function start($status)
    {
        // 入库式的系统菜单
        if($status) {
            $this->create_menu($this->admin_menu, 0, 'blog_addon');
        }else {
            $map = array('code'=>'blog_addon');
            $this->delete_menu($map);
        }
        return true;
    }

    public function install()
    {
        return true;
    }

    public function uninstall()
    {
        $map = array('code'=>'blog_addon');
        $this->delete_menu($map);
        return true;
    }
}